package threadUtils.demo05;

import java.util.concurrent.Phaser;

/**
 * 测试Phaser的阶段
 */
public class PhaserExample03 {

    public static void main(String[] args) throws InterruptedException {

        final Phaser phaser = new Phaser(3);

        System.out.println(phaser.getPhase()); // 0

        phaser.arrive();
        phaser.arrive();
        phaser.arrive();

        System.out.println(phaser.getPhase()); // 1

        phaser.bulkRegister(1);
        phaser.arrive();
        phaser.arrive();
        phaser.arrive();
        phaser.arrive();
        // 全部执行完，阶段就变化为2了
        System.out.println(phaser.getPhase()); // 2

        final Phaser phaser1 = new Phaser();

        int register = phaser1.register();// 注册返回当前阶段
        System.out.println(register);

        int arrive = phaser1.arrive(); // 执行完也返回当前阶段
        System.out.println(arrive);

        int register1 = phaser1.register();
        System.out.println(register1);


    }

}
